﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using PGE.Models.Repositorios;

namespace PGE.Models.Cadastros
{
    public class CadastroUsuario : IDisposable
    {
        private IRepositorioFabrica repositoryFactory;

        public CadastroUsuario()
        {
            this.repositoryFactory = new RepositoryFactory();
        }

        public void Criar(Usuario user)
        {
            repositoryFactory.Repository<Usuario>().Insert(user);
            repositoryFactory.Save();
        }

        public void Editar(Usuario user)
        {
            repositoryFactory.Repository<Usuario>().Update(user.ID, user);
            repositoryFactory.Save();
        }

        public void Remover(Usuario user)
        {
            repositoryFactory.Repository<Usuario>().Delete(user);
            repositoryFactory.Save();
        }

        public List<Usuario> AllUsers()
        {
            return repositoryFactory.Repository<Usuario>().Queryable.ToList();
        }

        public Usuario GetUsuario(int id)
        {
            return repositoryFactory.Repository<Usuario>().Find(id);
        }

        public List<Usuario> AllClientes()
        {
            return repositoryFactory.Repository<Usuario>().Queryable.Where(usuario => usuario.Tipo == "Cliente").ToList();
        }

        public List<Usuario> AllVendedores()
        {
            return repositoryFactory.Repository<Usuario>().Queryable.Where(usuario => usuario.Tipo == "Vendedor").ToList();
        }

        public void Dispose()
        {
            repositoryFactory.Dispose();
        }
    }
}